iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0
自我挑戰組

Line Bot 以python及Django建構系列 第 16

DAY16 簽到按鈕功能實現

  • 分享至 

  • xImage
  •  
if event.postback.data[0] == "簽" and event.postback.data[1] == '到':
    tz = timezone(timedelta(hours=+8))
    now=datetime.now(tz).isoformat()
    # now = (datetime.datetime.now()).isoformat()   #獲取當下時間
    today = str(now)[:19]
    uid=event.source.user_id
    user=User_Info.objects.get(uid=uid)
    user.date=today
    user.date_day1=today
    user.save()
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text="簽到完畢\n"+"簽到時間為:"+today) 
    )

當按下簽到按鈕時,會先讀取使用者的uid,並且去找資料庫中該使用者是否有註冊過帳號,如果沒有的話會報錯,有的話就會找到該使用者的date欄位儲存當前的時間,最後告訴使用者簽到完畢以及簽到的時間為何。


探索 Python 對時區的處理

在 Python 常用日期處理 -- 內建模組 datetime 探討了 Python 如何使用 datetime, 如果是一個跨時區的應用(Web 應用都是),就不能只儲存一個時間而不帶時區,如此,全球使用者將會看到一個相同的時間字串,白天黑夜就錯亂了。比說使用者資訊的更新時間儲存為 2020-07-07 13:46:08, 上海的使用者和芝加哥的使用者看到的是同一個時間字串,實質上卻相差好多個小時。

Python 內建元件不能像 Java 的 ZoneId.of("Asia/Shanghai") 直接以時區名獲得 Zone,而需要知道與標準時區的偏移,如上海是東八區,在 Python 中要用 timezone(timedelta(hours=+8))


今天的歌曲是 周杰倫-龍戰騎士 Dragon Rider
https://www.youtube.com/watch?v=6VRioN8euIs&list=PLFl6Na2uUoOZBEhBtQ_jeGA4P1V20JvpW&index=15&ab_channel=%E5%91%A8%E6%9D%B0%E5%80%ABJayChou


上一篇
DAY15 註冊按鈕功能實現
下一篇
DAY17 專案進度按鈕功能實現-1
系列文
Line Bot 以python及Django建構30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言